home *** CD-ROM | disk | FTP | other *** search
- /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % Copyright (C) 1994, by WATCOM International Inc. All rights %
- % reserved. No part of this software may be reproduced or %
- % used in any form or by any means - graphic, electronic or %
- % mechanical, including photocopying, recording, taping or %
- % information storage and retrieval systems - except with the %
- % written permission of WATCOM International Inc. %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- */
-
- #ifndef _WBASECL_HPP_INCLUDED
- #define _WBASECL_HPP_INCLUDED
- #pragma once
-
- #ifndef _WNO_PRAGMA_PUSH
- #pragma pack(push,8);
- #pragma enum int;
- #endif
-
- #ifndef _WCHAR_HPP_INCLUDED
- #include "wchar.hpp"
- #endif
-
- typedef unsigned long WClassID;
-
- #define WDeclareName(c) \
- public: \
- virtual const WChar* GetClassName() const;
-
- #define WDefineName(c) \
- virtual const WChar* c::GetClassName() const { return WTEXT( #c ); }
-
-
-
- #define WDeclareCommon(c) \
- public:\
- static WClassID ClassID(); \
- virtual WClassID GetClassID() const; \
- virtual WBool IsInstanceOf( WClassID id ) const; \
- virtual WBool IsInstanceOf( const WChar *classname ) const;
-
- #define WDefineCommon(c) \
- static WClassID c::ClassID() \
- { static WClassID id = 0; \
- extern WClassID WEXPORT WGetClassID( const WChar *name );\
- if( !id ) id = WGetClassID( WTEXT( #c ) );\
- return( id ); }\
- virtual WClassID c::GetClassID() const { return c::ClassID(); }\
- virtual WBool c::IsInstanceOf( WClassID id ) const \
- { return( id == c::ClassID() ); } \
- virtual WBool c::IsInstanceOf( const WChar *classname ) const \
- { extern WClassID WEXPORT WGetClassID( const WChar *name );\
- return IsInstanceOf( WGetClassID( classname ) ); }
-
-
-
- #define WDeclareSubclass(c,p) \
- \
- WDeclareName(c) \
- WDeclareCommon(c) \
- public:\
- virtual WBool IsDerivedFrom( WClassID id ) const; \
- virtual WBool IsDerivedFrom( const WChar *classname ) const;
-
- #define WDefineSubclass(c,p) \
- \
- WDefineName(c) \
- WDefineCommon(c) \
- virtual WBool c::IsDerivedFrom( WClassID id ) const \
- { return (WBool)( ( id == c::ClassID() ) ? 1 : p::IsDerivedFrom( id ) ); } \
- virtual WBool c::IsDerivedFrom( const WChar *classname ) const \
- { extern WClassID WEXPORT WGetClassID( const WChar *name );\
- return IsDerivedFrom( WGetClassID( classname ) ); }
-
-
- #define WDeclareRoot(c) \
- \
- WDeclareName(c)\
- WDeclareCommon(c) \
- public:\
- virtual WBool IsDerivedFrom( WClassID ) const;\
- virtual WBool IsDerivedFrom( const WChar *classname ) const;
-
- #define WDefineRoot(c) \
- \
- WDefineName(c)\
- WDefineCommon(c) \
- virtual WBool c::IsDerivedFrom( WClassID id ) const \
- { return (WBool)( id == c::ClassID() ); } \
- virtual WBool c::IsDerivedFrom( const WChar *classname ) const \
- { extern WClassID WEXPORT WGetClassID( const WChar *name );\
- return IsDerivedFrom( WGetClassID( classname ) ); }
-
-
- #ifndef _WNO_PRAGMA_PUSH
- #pragma enum pop;
- #pragma pack(pop);
- #endif
-
- #endif // _WCLASS_HPP_INCLUDED
-